# 带参数的装饰器
# 要求从不同位置读取用户信息
def outer(user_type):  # 通过再嵌套一层函数来实现装饰器的参数传递
    def login_auth(func):
        def auth(*args, **kwargs):

            if user_type == 1:
                print('user info from mysql')
            elif user_type == 2:
                print('user info from oracle')
            else:
                print('user info from txt')
            res = func(*args, **kwargs)
            return res

        return auth

    return login_auth


@outer(1)  # 调用 outer(1) 得到返回值 login_auth 函数地址,所以 @outer(1) == @login_auth
def index():
    print('from index')


@outer(3)
def home():
    print('form home')


index()
home()
